<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<style type="text/css">
<!--
        div.section {margin-bottom:15px;} 
        div.para {margin-top:3px; margin-bottom:3px; } 
        pre {margin-left:15px;margin-bottom:0px;margin-top:5px;border-style:solid;border-width:1px; padding:5px;font-weight:700;width:60%}
        h1 {margin-bottom:2px; } 
        h2 {margin-bottom:2px; } 
        h3 {margin-bottom:1px; } 
        h4 {margin-bottom:1px; }
        body {background-color:white; font-family:Arial,Helvetica,SansSerif;
              font-size:11px;margin-left:30px;margin-right:30px;}-->
</style>
<title>Summary</title>
</head>
<body>
  
    
<h1>
<a name="summary">Summary</a>
</h1>
      
<div class="para">Quick Sequence Diagram Editor is a tool for creating UML sequence
        diagrams from textual descriptions of objects and messages.</div>
      
<div class="para">It supports threads, actors, constructors, destructors, notes and
        fragments. </div>
      
<div class="para"> The aim of the tool is to save you from lots of the stupid work
        that WYSIWYG applications require, by trading off not too much
        flexibility. It beats these applications by far when it comes to insert
        or remove objects and messages. This can be done by just inserting or
        removing a line of text, the tool will do all the rest. </div>
    
    
<h1>
<a name="features">Features</a>
</h1>
      
<div class="para"> Among its features are: <ul>
          
<li>Automatic redrawing - The diagram changes as you type. </li>
          
<li>Syntax check - errors in the textual descriptions are
            highlighted and can thus easily be found. </li>
          
<li>Automatic completion - Object names can be guessed from a prefix
            (using the TAB key). </li>
          
<li>Export - Diagrams can be exported in virtually any format,
            whether vector or pixel based. </li>
          
<li>Zoom - Diagrams can be viewed in any zoom factor.</li>
          
<li>View-text-correspondence - When you enter a message, the diagram
            view scrolls to where the corresponding arrow is to be seen. When
            you click an arrow, the cursor moves to the line where the message
            corresponding to the arrow is specified. </li>
          
<li>Server mode - Diagram specifications generated by another tool
            can be transmitted through a socket and displayed in real-time. </li>
          
<li>Links - You can create links to other diagrams. This feature can
            be used for providing easy access to a finer view onto something
            from which a more coarse-grained diagram abstracts away.</li>
          
<li>Pagination - Diagrams can be printed on multiple pages.</li>
          
<li>Persistent preferences - Diagram preferences can be saved along
            with the diagram's source code.</li>
        
</ul>
      
</div>
    
    
<h1>
<a name="examples">Examples</a>
</h1>
      
<ol>
        
<li>
          
<a href="bfs.sdx">Breadth first search</a>
        
</li>
        
<li>
          
<a href="levels.sdx"> Example illustrating levels and mnemonics </a>
        
</li>
        
<li>
          
<a href="order.sdx">Ticket order</a>
        
</li>
        
<li>
          
<a href="ssh.sdx"> SSH 2 (by courtesy of Carlos Duarte) </a>
        
</li>
        
<li>
          
<a href="webserver.sdx">Webserver</a>
        
</li>
      
</ol>
    
  
  
<h1>
<a name="how">How to enter text</a>
</h1>
    
<div class="para"> Use the text area at the bottom of the window to specify your objects
      and messages. The object section must be separated from the message
      section by an empty line. </div>
    
<div class="para"> Should there be a (syntax) error in your text, the first line where
      such an error occurs is highlighted. And there will be a description of
      the error at the bottom of the window. </div>
    
<div class="para"> '.' and ':' will not be interpreted as delimiters, if they are
      preceded by a '\'. </div>
    
<h2>
<a name="how.objects">Objects</a>
</h2>
      
<div class="para"> For each object you want to appear in your sequence diagram, type </div>
      
<pre>
&lt;name&gt;:&lt;Type&gt;[&lt;flags&gt;] "&lt;label&gt;"
      </pre>
      
<div class="para">or</div>
      
<pre>
/&lt;name&gt;:&lt;Type&gt;[&lt;flags&gt;] "&lt;label&gt;"
      </pre>
      
<div class="para"> into the text area. This represents an instance of class
        &lt;Type&gt;, named &lt;name&gt; which will be shown as
        a lifeline. &lt;name&gt;. The [&lt;flags&gt;] and
        "&lt;label&gt;" parts are optional: </div>
      
<div class="para"> If you specify a quoted label, it will be used to label the object
        with, otherwise the object's label will be derived from the name and the
        type. </div>
      
<h3>
<a name="how.objects.invisible">Invisible objects</a>
</h3>
        
<div class="para"> If &lt;name&gt; is prefixed with a '/', the lifeline will
          be invisible until the instance is created by a 'new' message to
          &lt;name&gt; (see below). </div>
      
      
<h3>
<a name="how.objects.flags">Flags</a>
</h3>
        
<div class="para"> An object declaration can be followed by a sequence of
          &lt;flags&gt; between square brackets. Four flags (a,p,r,x)
          are supported: </div>
        
<h4>
<a name="how.objects.flags.anonymous">a-nonymous</a>
</h4>
          
<div class="para"> The object is anonymous, so the name (which must still be there
            in order to be able to reference the lifeline) will not appear on
            the diagram, just a colon followed by the type. This flag is useless
            if a &lt;label&gt; is specified. </div>
        
        
<h4>
<a name="how.objects.flags.role">r-ole</a>
</h4>
          
<div class="para">The label of the lifeline will not be underlined.</div>
        
        
<h4>
<a name="how.objects.flags.process">p-rocess</a>
</h4>
          
<div class="para"> The object behaves like an actor (see below), but it is
            represented by a box with a thick border, not by a figure. </div>
        
        
<h4>
<a name="how.objects.flags.external">e-external</a>
</h4>
          
<div class="para">(Only) a process can be declared to be external, which means
            that it represents an external entity with the ability to send
            "found" messages, but not appearing on the
            diagram. Messages originating from an external process are
            represented by arrows starting with filled circles. </div>
        
        
<h4>
<a name="how.objects.flags.destroy">x-auto-destruction</a>
</h4>
          
<div class="para"> The object is destroyed when it has sent its last answer,
            denoted by a cross below its lifeline. One might interpret this as
            automatic destruction of non-persistent objects by a garbage
            collector. </div>
        
        
          
<div class="para"> There are other flags, relevant for <a href="Multithreading help:multithreading_help.html">
              multithreading </a> . </div>
        
        
      
      
<h3>
<a name="how.objects.actors">Actors</a>
</h3>
        
<div class="para"> If &lt;Type&gt; is 'Actor', the lifeline belongs to an
          actor. An actor is always active and sends asynchronous messages. It
          cannot send messages to itself. Also, it cannot receive answers (see
          below). In order to send an answer to an actor, one must use an
          explicit message.</div>
      
    
    
<h2>
<a name="how.messages">Messages</a>
</h2>
      
<div class="para"> The lines in the message section have the following format: </div>
      
<pre>
&lt;caller&gt;[&lt;s&gt;]:&lt;answer&gt;=&lt;callee&gt;[m].&lt;message&gt; [{&lt;properties&gt;}]
      </pre>
      
<div class="para">&lt;caller&gt; is the name of an object that has been
        declared in the object section. It is either the first one to send a
        message or has received a message before and not yet answered to it.
        Otherwise it is not active and cannot send a message. </div>
      
<div class="para"> [&lt;s&gt;] is optional and refines the specification of
        the caller object. </div>
      
<div class="para"> If &lt;s&gt; is a number, it denotes the 'level' of the
        caller: A caller may have received k messages to which it has yet to
        answer. Then &lt;s&gt; can range from 0 to k-1. Before
        &lt;caller&gt; sends the message, it will answer to the
        &lt;s&gt; most recent messages. </div>
      
<div class="para"> If &lt;s&gt; is not a number, it is a mnemonic. A mnemonic
        can be defined for a callee (by using the optional [&lt;m&gt;]
        part). If &lt;s&gt; is a mnemonic that has been defined for the
        object &lt;caller&gt; and &lt;caller&gt; is still
        active, &lt;caller&gt;[&lt;s&gt;] references this
        object. </div>
      
<div class="para"> &lt;answer&gt;= is optional and &lt;answer&gt; is
        simply a string representing the answer to the message. This string is
        used as a label of a dashed arrow from the &lt;callee&gt; to the
        &lt;caller&gt; lifeline. Note that there cannot be answers to
        messages sent by and to actors.</div>
      
<div class="para"> &lt;callee&gt;. is optional and &lt;callee&gt;
        denotes the object that receives the message represented by the string
        &lt;message&gt;, which is used as a label of an arrow from
        &lt;caller&gt; to &lt;callee&gt;. If no
        &lt;callee&gt; is specified, &lt;message&gt; is
        interpreted as an description of a simple action (not another invocation
        of a method/procedure) performed by the caller. </div>
      
<div class="para"> [&lt;m&gt;] is optional and &lt;m&gt; is a mnemonic
        containing at least one character that is not a digit. As long as the
        callee is active, it can be referenced as a caller by its name followed
        by [&lt;m&gt;]. </div>
      
<div class="para"> &lt;message&gt; can consist of more than one line,
        separated by (a literal) \n. </div>
      
<div class="para"> &lt;properties&gt;, including the enclosing curly braces, is an optional
        string consisting of pairs of the format name=value, separated
        by commas. These will only be interpreted if "Use dynamic message properties"
        is checked in the "Message" section of the configuration.
        (See <a href="#how.messages.dynprops">below</a>)</div>
      
<h3>
<a name="how.messages.constructors">Constructors</a>
</h3>
        
<div class="para"> Messages that are named ' <strong>new</strong> ' or that start
          with ' <strong>new(</strong> ' are special messages. They can be sent
          only once to objects that were declared with a '/' before their names.
          On receiving a 'new' message, the object will be created and its
          lifeline will become visible. </div>
      
      
<h3>
<a name="how.messages.destructors">Destructors</a>
</h3>
        
<div class="para"> Messages that are named ' <strong>destroy</strong> ' or that
          start with ' <strong>destroy(</strong> ' are also special. They can
          only be sent to an object that is not active. After receiving the
          destroy-message, the object may become active for the last time and,
          for example, send some destroy messages to other objects. But after
          this last activity ended, the object is destroyed (denoted by a cross
          below its lifeline) and cannot be reclaimed. </div>
      
      
<h3>
<a name="how.messages.actor_messages">Actor messages</a>
</h3>
        
<div class="para"> Actors can only send and receive asynchronous messages that
          return immediately. An asynchronous message will be generated that is
          sent back to the actor when the activity that was started by his
          message is finished.</div>
        
<div class="para"> If an actor sends a message to an ordinary object, all activities
          will be finished before. An actor should typically send the first
          message of the diagram, but this is not necessary, sequences without
          even a single actor are still supported. </div>
      
      
<h3>
<a name="how.messages.broadcast">Broadcast messages</a>
</h3>
        
          
<div class="para"> See <a href="Multithreading help:multithreading_help.html">
              multithreading </a> . </div>
        
        
      
      
<h3>
<a name="how.messages.dynprops">Dynamic properties</a>
</h3>
        
<div class="para">Dynamic message properties will only be interpreted when
          "Use dynamic message properties" is checked in the "Messages"
          section of the configuration.</div>
        
<div class="para">Currently, there is only one property supported: "colour". 
        For instance, if you append "{colour=blue}" to the text of a message,
        the arrow representing this message will be blue.</div>
      
    
    
<h2>
<a name="how.annotations">Annotations</a>
</h2>
      
<div class="para">Diagrams can be annotated in three different ways.</div>
      
<h3>
<a name="how.annotations.sharp">Source text comments</a>
</h3>
        
<div class="para"> First, you may insert lines starting with a '#' in the textual
          description. These lines serve as comments and will not be
          interpreted, unless they start with '#!', which indicates an active
          comment. </div>
        
<h4>
<a name="how.annotations.sharp.title">Title</a>
</h4>
          
<div class="para">A line of the form</div>
          
<pre>
#![&lt;title&gt;]
          </pre>
          
<div class="para"> specifies a diagram title. If it is present, the diagram will
            be surrounded by a frame, with the title written at the top left
            corner of the frame. </div>
        
        
<h4>
<a name="how.annotations.sharp.description">Description</a>
</h4>
          
<div class="para">A sequence of lines of the form</div>
          
<pre>
#!&gt;&gt;
#!A paragraph
#!of text describing
#!what is going on.
#!&lt;&lt;</pre>
          
<div class="para"> is interpreted as text that will be written above the diagram. </div>
        
      
      
<h3>
<a name="how.annotations.fragments">Fragments</a>
</h3>
        
<div class="para"> Second, a sequence of messages can be declared to be a fragment
          of the diagram. A fragment is represented by a frame surrounding those
          messages. It has a type (for example: alt, cond, or opt), appearing in
          the top-left corner, and a text, appearing in square brackets at the
          top of the frame. The text typically represents a condition. For
          example: </div>
        
<pre>
[c:&lt;type&gt; &lt;text&gt;]
  foo:bar.message_1
  foo:bar.message_2
  ...
  foo:bar.message_n
[/c]</pre>
        
<div class="para"> Fragments can be slightly abused: if you write [c
          &lt;text&gt;] (without the colon), all of the text will appear
          in the small box in the top left corner. </div>
        
<div class="para"> Fragments may contain sections. To open a new section, insert a
          line of the form </div>
        
<tt>--some text</tt>
        
<div class="para"> The effect is that a dashed line is drawn from the left to the
          right end of the current fragment frame, with "some
          text" being written below this line. </div>
      
      
<h3>
<a name="how.annotations.notes">Notes</a>
</h3>
        
<div class="para"> Third, there are notes. These appear in a box resembling a piece
          of paper that is arranged to the right of a lifeline. Notes are a part
          of the message section. The top of the box is where an arrow belonging
          to a message specified at the same position in the text would appear.
          The syntax is similar to a here-document delimited by an asterisk
          followed by a number (without the &lt;&lt;). </div>
        
<pre>
*&lt;num&gt; &lt;name&gt;
multi-
line
note
*&lt;num&gt;</pre>
        
<div class="para"> &lt;name&gt; is the name of the lifeline such that the
          note is to the right of it. &lt;num&gt; is the unique number
          identifying the note. You can refer to this number anywhere in the
          code - even before the note - in order to associate the note to
          messages or lifelines. For this you add one of the following prefixes
          to a message or the name of a lifeline: <ul>
            
<li> (&lt;num&gt;). A line will be drawn from the note box
              with the number &lt;num&gt; to the message arrow or to the
              current vertical position of the lifeline. </li>
            
<li> (&lt;num&gt;,&lt;anum&gt;). This can only be
              the prefix of a message. The effect is the same as above, if
              &lt;num&gt; is not empty. Additionally, there will be a
              line drawn from the note box &lt;anum&gt; to the arrow
              belonging to the answer of the message </li>
          
</ul> Example: </div>
        
<pre>
*5 foo
  foo calls bar's wait method
*5
*6 foo
  foo is waiting for bar
*6
*7 foo
  bar is ready
*7

(5,7)foo:ready=bar.wait()
(6)foo
  bar:do something
(6)foo
bar:do something more
        </pre>
        
<div class="para"> If you use a "+" instead of a
          "*", the note box will consume as much vertical
          space as it needs and there will not be any message arrow or other
          note box beside it. When using "*", the note box
          will consume its own vertical space only if it is followed by a
          message arrow that is adjacent to one its both neighbour lifelines. </div>
        
<div class="para"> There are no direct associations between notes and objects. If
          one wishes to note something concerning an object or actor, she or he
          should specify a note belonging to the corresponding lifeline before
          any message has been specified. </div>
        
<h4>
<a name="how.annotations.notes.links">Links</a>
</h4>
          
<div class="para"> A single-lined note that starts with "link:"
            is interpreted as a link to another sequence diagram. The part of
            the line that follows is a URI (see <a href="http://www.ietf.org/rfc/rfc3986.txt"> RFC 3986 </a> ) of
            an sd file. If the URI is relative, it is resolved against the
            location of the file of the current diagram. Example: </div>
          
<pre>
#BEGIN of file "a.sd"
a:A

*1 a
link:b.sd
*1 a
#END
          </pre>
          
<pre>
#BEGIN of file "b.sd",
#located in the same directory as "a.sd"
b:B
#END
          </pre>
          
<div class="para"> When the note in the "a.sd" diagram is
            clicked, "b.sd" will be opened. </div>
          
<div class="para"> There is a problem when the characters behind
            "link:" contain spaces. This is a bad URI syntax.
            Spaces must be replaced by "%20". Especially on
            Windows, where directory names with spaces are far from being
            exceptional - for instance "Program Files" - one
            may easily run into this problem when trying to specify absolute
            paths. </div>
          
<div class="para"> Those characters are interpreted as a URI for the sake of
            platform independence. This means that even on the Windows platform,
            "/" is to be used as a separator in a path to a
            file. Absolute path names should start with
            "file:/". </div>
        
      
    
    
<h2>
<a name="how.autocomplete">Automatic completion</a>
</h2>
      
<div class="para"> When you have entered a (non-empty) prefix of a name of an object,
        you can press the TAB key (like in a UNIX shell) or Ctrl-Shift-Space
        (like in some IDEs) for completing the name automatically or for
        browsing through (via successive keystrokes) all object names with that
        prefix. </div>
      
<div class="para"> If there is whitespace or a delimiter (one of {'&gt;', ':',
        '='}) to the left of the cursor, the TAB key will behave normally, so
        you can still use it for indentations. </div>
    
    
<h2>
<a name="how.autoredraw">Automatic redrawing</a>
</h2>
      
<div class="para"> By default, a new diagram is generated from your text almost as
        soon as the text changes, even if this change in text would leave the
        diagram unchanged. </div>
      
<div class="para"> This is a suitable behaviour for a standalone PC that is reasonably
        well equipped. In some situtations, however, especially when Quick
        Sequence Diagram Editor acts as a remote X client, it can be a nuisance.
        So you may disable automatic redrawing in the preferences dialog. When
        it is disabled, only a syntax/semantic check is performed. To see a new
        diagram, you must click "Redraw" or type F5. </div>
      
<div class="para"> The time that passes between a change of text and a redrawing or a
        syntax/semantic check can also be adjusted in the configuration dialog
        (see "Redraw/syntax check delay"). It may be desirable
        to have two different delays (one for redrawing, one for the check), but
        this feature is not (yet?) implemented. </div>
    
  
  
    
<h1>
<a name="other">Supplementary help pages</a>
</h1>
      
<div class="para"> Please also take a look at these supplementary help pages: <ul>
          
<li>
            
<a href="Multithreading help:multithreading_help.html">
              Multithreading </a>
          
</li>
          
<li>
            
<a href="Notes on asynchronous messages:async.html"> Asynchronous
              messages </a>
          
</li>
        
</ul>
      
</div>
    
  
  
<h1>
<a name="preferences">Preferences</a>
</h1>
    
<div class="para"> There are some types of preferences, which can all be adjusted in the
      tabs of a single preferences dialog. <ul>
        
<li>Global preferences: These preferences determine the general
          behaviour and look of the application. They are stored in the file
          <tt>.sdedit.conf</tt> in a user directory ($HOME on Unix,
          Application Data on Windows). In order to restore the default
          preferences (which came shipped with the application), one can use the
          "Restore defaults" button. </li>
        
<li>Initial diagram preferences: These preferences are applied to a
          diagram that is being newly created or that is loaded from a plain
          (sd) file. They are also stored in <tt>.sdedit.conf</tt>. One can
          use the current diagram's preferences as the initial preferences (via
          the "Save as initial" button). Also, one can restore
          the default initial preferences (which came shipped with the
          application) via the "Restore defaults" button. </li>
        
<li> Current diagram preferences: These preferences are applied only
          to the diagram currently being displayed. They are saved along with
          the diagram source when it is saved as an sdx file. When a diagram is
          saved as an sd file, these preferences will be lost. </li>
      
</ul>
    
</div>
  
  
<h1>
<a name="filtering">Filtering</a>
</h1>
    
<div class="para"> The contents of the text area can be replaced by the output of a
      command that you have entered after clicking the filter icon. If no text
      is selected, the whole of the text is used as the command's input and
      replaced by its output, otherwise the replacement is applied to the
      selection only. </div>
    
<div class="para"> The field where the command is entered can be left by clicking the
      ESC key. This may also terminate a command that has been entered and has
      not yet finished. There is a history of commands you have already entered
      in this session, through which you can browse using the cursor up and
      cursor down key. </div>
    
<div class="para"> This feature can be used by people who are too lazy to use the file
      dialog in order to load a file. For example: cat ~/my_diagram.sd. It can
      also be used for replacing patterns: sed s/foo/bar/g. Or to remove lines
      that contain comments: grep -v # ... Of course cat, sed and grep must be
      available on the system then. </div>
  
  
    
<h1>
<a name="map">HTML map files</a>
</h1>
      
<div class="para"> If an image of a sequence diagram is used on a website, if might be
        useful to be able to navigate to a certain target if a head of a
        lifeline is clicked. For this purpose, a HTML map file can be generated
        for the diagram that is currently being displayed (see the Extras menu). </div>
      
<div class="para"> The map file contains just a <tt>&lt;map&gt;</tt> tag,
        comprising <tt>&lt;area&gt;</tt> tags for each object of the
        diagram. The <tt>&lt;area&gt;</tt> tag's <tt>href</tt>
        attribute equals the name of the object, or, if the declaration of the
        object is followed by
        <tt>'#!href="&lt;url&gt;"'</tt> , an URL
        of your choice. Example: </div>
      
<pre>
object:Class #!href="../foo.html#bar"
      </pre>
    
  
  
    
<h1>
<a name="taglet">Javadoc taglet</a>
</h1>
      
<div class="para"> Quick Sequence Diagram Editor helps you to add sequence diagrams to
        your Java documentation (javadoc). Pass these two parameters to the
        javadoc tool: </div>
      
<tt> -tagletpath &lt;CLASSPATH&gt; -taglet
        net.sf.sdedit.taglet.SequenceTaglet </tt>
      
<div class="para">
        &lt;CLASSPATH&gt; is the location of the Quick Sequence
        Editor class files, that can be the jar file or the bin
        directory. If you are using the exe file, there is no such location,
        sorry. </div>
      
<div class="para"> Now javadoc will interpret the contents of
        @sequence.diagram tags as textual descriptions of sequence
        diagrams. It will create PNG images from them and they will be shown on
        the HTML pages generated by the standard doclet. The images are stored
        in a directory that is a child of the javadoc target directory. </div>
      
<div class="para"> When @sequence.diagram is followed by a quoted string,
        this string will be used as a headline for the sequence diagram.
        @sequence.diagram can appear in a package description and
        anywhere in a class definition. </div>
      
<div class="para">Example:</div>
      
<pre>
/**
  This is the description of the EnigmaDecoder.
  ...
 
  @author Alan Turing
  @sequence.diagram "Instantiation of the EnigmaDecoder"
  a:A
  /decoder:EnigmaDecoder
 
  a:decoder.new
  @deprecated
    */</pre>
      
<div class="para"> Beware of code-formatters that join lines in javadoc comments. This
        might result in syntactically wrong sequence diagram descriptions. </div>
    
    
    
<h1>
<a name="command_line_usage">Command line</a>
</h1>
      
<div class="para"> sdedit can be started from within a shell. Let
        &lt;start-command&gt; be the start command, e. g. <tt>java
          -jar sdedit-3.0.jar</tt>, <tt>sdedit-3.0.exe</tt>,
        <tt>sdedit.bat</tt>, or <tt>./sdedit.sh</tt>. Users of the zip
        distributions who are familiar with Java might start sdedit typing
        something like <tt>java -classpath bin:lib/...</tt>. Note that
          <tt>ant run</tt> or <tt>ant start</tt> will not work as a
        &lt;start-command&gt;. </div>
      
<div class="para"> The point of running sdedit from within a shell is to automatically
        create images from diagram files. </div>
      
<div class="para">In order to do this, specify the name of the output file to be
        created using the <tt>-o</tt> option. The type of the file to be
        created (pdf, ps, svg, png, ...) is to be named as the value of the
        <tt>-t</tt> option. The paper format (one of {A0, ..., A7}) and
        orientation (one of {Portrait,Landscape}) can be configured using the
        <tt>-f</tt> and <tt>-r</tt> option, respectively. Appending
        <tt>-h</tt> as an option shows a list of long options that can be
        used for configuring the diagram. </div>
      
<div class="para"> Examples: <ul>
          
<li>
            
<tt>&lt;start-command&gt; -h</tt>
          
</li>
          
<li>
            
<tt>&lt;start-command&gt; -o /tmp/bfs.pdf -t pdf /tmp/examples/bfs.sd</tt>
          
</li>
          
<li>
            
<tt>&lt;start-command&gt; -o /tmp/ssh.ps -t ps -f A0 -r
              Landscape --threaded=false /tmp/examples/ssh.sd</tt>
          
</li>
        
</ul>
      
</div>
      
<div class="para">If options are used, exactly one input file must be defined. When no
        option is used, arbitrarily many input files can be specified, which
        will be loaded into separate tabs then. </div>
    
  
  
<h1>
<a name="server">RT diagram server</a>
</h1>
    
<div class="para"> Diagram specifications can be transmitted through a TCP socket and
      displayed in real time, i. e. as soon as a new line is transmitted, the
      diagram will be updated. </div>
    
<div class="para"> To use this function, select "Start/stop RT server"
      in the Extras menu and enter a port number. A process that connects to the
      port will have to follow a very simple uni-directional protocol: <ul>
        
<li> The first line is interpreted as the name of a new tab to be
          opened. </li>
        
<li> The remaining lines are entered into the text area of the new
          tab. </li>
        
<li> When a line consists of the word "end", the
          socket will be closed. The line will not appear in the text area. </li>
      
</ul> The server is started automatically if the "Autostart RT
      diagram server" flag is set to 1 in the configuration dialog. </div>
  
  
    
<h1>
<a name="author">Author</a>
</h1>
      
<div class="para"> Markus Strauch &lt; <a href="mailto:markus-strauch@arcor.de"> markus-strauch@arcor.de </a>
        &gt; </div>
    
    
<h1>
<a name="ack">Acknowledgement</a>
</h1>
      
<div class="para"> Thanks to Sebastian Loh for his relentless yet very constructive
        criticism towards this application's user interface. </div>
    
    
<h1>
<a name="copyright">Copyright</a>
</h1>
      
<div class="para"> Copyright (c) 2006 - 2009 Markus Strauch. All rights reserved. </div>
    
    
<h1>
<a name="license">License</a>
</h1>
      
<div class="para"> This program is released under the terms of the BSD license: </div>
      
<div class="para"> Redistribution and use in source and binary forms, with or without
        modification, are permitted provided that the following conditions are
        met: </div>
      
<div class="para"> Redistributions of source code must retain the above copyright
        notice, this list of conditions and the following disclaimer. </div>
      
<div class="para"> Redistributions in binary form must reproduce the above copyright
        notice, this list of conditions and the following disclaimer in the
        documentation and/or other materials provided with the distribution. </div>
      
<div class="para">
        
<strong> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
          CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
          WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
          MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
          IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
          ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
          DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
          GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
          INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
          IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
          OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
          ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </strong>
      
</div>
      
<h2>
<a name="license.third">Third party licenses</a>
</h2>
        
<div class="para"> The icons for decorating this program's buttons are taken from
          Crystal SVG - see <a href="http://www.everaldo.com">
            http://www.everaldo.com </a> They are released under the terms of
          the LGPL - see <a href="http://www.fsf.org/licensing/licenses/lgpl.html">
            http://www.fsf.org/licensing/licenses/lgpl.html </a>
        
</div>
        
<div class="para"> The icon identifying this application's window is taken from
          ArgoUML, copyright by Tigris - see <a href="http://argouml.tigris.org"> http://argouml.tigris.org </a>
          - and released under the terms of the BSD license (see above). </div>
        
<div class="para"> The following software may be included in this product: FREEHEP -
          Copyright 2000-2005 by CERN, Geneva, Switzerland; SLAC, Stanford,
          California, U.S.A.; University of California Santa Cruz, U.S.A. The
          use of this software is governed by the terms of the LGPL. - see <a href="http://www.fsf.org/licensing/licenses/lgpl.html">
            http://www.fsf.org/licensing/licenses/lgpl.html </a>
        
</div>
        
<div class="para"> The following software may be included in this product:
          Base64Coder - A Base64 Encoder/Decoder. Copyright 2003: Christian
          d'Heureuse, Inventec Informatik AG, Switzerland. Home page: <a href="http://www.source-code.biz">source-code.biz</a> . Base64Coder
          is "Open Source" software and released under the
          terms of the LPGL. - see <a href="http://www.fsf.org/licensing/licenses/lgpl.html">
            http://www.fsf.org/licensing/licenses/lgpl.html </a>
        
</div>
        
<div class="para"> The following software may be included in this product: Apache
          Commons CLI. Copyright 2001-2007 The Apache Software Foundation. It
          includes software developed by The Apache Software Foundation
          (http://www.apache.org/). The use of this software is governed by the
          terms of the Apache license - see <a href="http://www.apache.org/licenses">
            http://www.apache.org/licenses </a> . </div>
      
    
  

</body>
</html>
